Carregando pacotes

##### Carregando pacotes -------
library(ggplot2) # Gráficos
library(ggthemes) # Temas ggplot
library(plotly) # Plots dinâmicos
library(astsa) # Arima; Série de desemprego (unemp)
library(purrr)  # importa %>%
library(xts) # Objeto zoo e xts
library(lubridate) # Para eixos
library(readxl) # Lida melhor com excel
library(RColorBrewer) # Consultar
library(lattice) # Consultar
library(grid) # Consultar
library(gridExtra) # Consultar
library(gtable) # Consultar
library(magick) # Para ler imagem. ATENÇÂO INSTALAÇÂO
library(rmarkdown) # Make cool dynamic documents [Necessário?]
library(knitr) # Run R Code Chunks [Necessário?]
library(DT) # Interactive HTML tables
library(d3heatmap) # biblioteca para construir heatmaps
library(colorRamps)# Ajuda com heatmaps e cores
# Pacotes para dados brasileiros -----------------------
library(BETS)
library(rbcb) # Banco Central
library(ecoseries) #BC ipeadata e SIDRA
library(ribge) # IBGE
# Pacotes para dados internacionais -----------------------
library(imfr) #para pegar series do site do FMI 

Séries

Tratamento

Correção de data

  • Autor: Gabriel Petrini
  • Função: ajuste_excel_data
    • Transforma a série do excel em um objeto xts com a data ajustada para o R
  • Status: Em desenvolvimento
ajuste_xts <- function(dados,
                       col_data = 1,
                       col_dados = 2,
                       remover_NA = FALSE){
    if ("xts" %in% class(dados) 
        | "zoo" %in% class(dados)) {
        message("Série está em xts/zoo, função ajuste_xts não necessária")
    if (sum(is.na(dados)) != 0 & remover_NA == FALSE) {
        message("Séries contém NAs, use remover_NA = TRUE", call. = FALSE)
    }    
    if (remover_NA == FALSE) {
        xts(x = coredata(dados),
        order.by = as.Date(index(dados)))
    } else {
        sem_NA <- !is.na(coredata(dados))
        xts(x = coredata(dados[sem_NA]),
        order.by = as.Date(index(dados[sem_NA])))
    }
    } else if ("ts" %in% class(dados)) {
        dados <- as.xts(dados)
    }
        else {
    if (sum(is.na(dados)) != 0 & remover_NA == FALSE) {
        message("Séries contém NAs, use remover_NA = TRUE", call. = FALSE)
    }
    if (remover_NA == TRUE) {
        teste_NA <- !(is.na(dados[, col_dados]))
        dados_sNA <- dados[teste_NA,]
        proxy <- as.data.frame(dados_sNA)
        proxy_data <- as.Date(proxy[, col_data], origin = proxy[1, col_data])
        xts(x = proxy[, col_dados],
        order.by = proxy_data)
    } else{
     proxy <- as.data.frame(dados)
     proxy_data <- as.Date(proxy[ , col_data], origin = proxy[1,col_data])
     xts(x = proxy[, col_dados],
        order.by = proxy_data)   
    }
        }
}

Exemplo:

dado_excel <- read_xlsx("../../Brutos/ativ_econ.xlsx", sheet = "IBCBr")
dado_excel_ajustado <- ajuste_xts(dado_excel)
## Séries contém NAs, use remover_NA = TRUEFALSE
head(dado_excel_ajustado, n = 13)
##              [,1]
## 2002-02-01     NA
## 2002-03-01     NA
## 2002-04-01     NA
## 2002-05-01     NA
## 2002-06-01     NA
## 2002-07-01     NA
## 2002-08-01     NA
## 2002-09-01     NA
## 2002-10-01     NA
## 2002-11-01     NA
## 2002-12-01     NA
## 2003-01-01 100.42
## 2003-02-01 101.87
dado_excel_sNA <- ajuste_xts(dado_excel, remover_NA = TRUE)
head(dado_excel_sNA)
##              [,1]
## 2003-01-01 100.42
## 2003-02-01 101.87
## 2003-03-01 102.23
## 2003-04-01 101.13
## 2003-05-01  99.68
## 2003-06-01 100.40
class(dado_excel_sNA)
## [1] "xts" "zoo"
head(ajuste_xts(dado_excel_sNA))
## Série está em xts/zoo, função ajuste_xts não necessária
##              [,1]
## 2003-01-01 100.42
## 2003-02-01 101.87
## 2003-03-01 102.23
## 2003-04-01 101.13
## 2003-05-01  99.68
## 2003-06-01 100.40

Atenção:

IPEADATA

  • Autor: Gabriel Petrini
  • Função: clean_ipeadata
    • Uso: Separa os dados do IPEADATA em uma coluna com data (xts) e valores
  • Status: Aprimoramento
clean_ipeadata <- function(dado_ipea) {
  dado_desl <- unlist(dado_ipea)
  valor <- dado_desl[((length(dado_desl)/2) + 1):length(dado_desl)]
  data_ipea <- dado_desl[1:(length(dado_desl)/2)]
  data_clean <- as.Date(data_ipea)
  xts_name <- deparse((substitute(dado_ipea)))
  xts(x = valor, order.by = data_clean)
}

Exemplo:

[EM ABERTO]

Atenção:

  • Não testada para mais de uma série

Exportar dados

  • Autor: Gabriel Petrini
  • Status: Em desenvolvimento
exportar_dados <- function(dados,
                           pasta = "../Tratados", # Se não estiver na mesma pasta, "../Pasta"
                           formato = ".RData") {
    nome_dado <- deparse(substitute(dados)) 
    nome_arquivo <- paste0(nome_dado,formato)
    caminho <- file.path(pasta, nome_arquivo)
     saveRDS(dados,
             file = caminho)
    }

Exemplo:

exportar_dados(dado_excel_ajustado, 
               pasta = "./Temp/")

Operações

Média Móvel

OBS: Para gráficos, usar ggplot

  • Autor: Arthur Welle
  • Função: MM2m (Média Móvel 12 meses)
  • Status: Aprimoramento
MM12m <- function(x) {
                y <- c(1:(length(x)))                        #cria variavel y to tamanho da serie inserida
                      for(i in 1:(length(x)-11)) {         #para i vezes menos 12 
                            y[i+11]<-mean(x[(i+0):(i+11)]) #faz média de 12 passos
                      }
                y[1:12]<-NA                                #coloca NA nas primeiras 12 entradas
                return(y)                                  #dá como retorno a série media movel 12 meses
}

Exemplo:

unemp_MM12m <- MM12m(unemp)
plot.ts(unemp_MM12m)

Sugestões de mudanças:

  • Detectar a ordem da média móvel
    • Tornar 12 meses como default
  • Renomear argumentos
  • Atenção: Retorna como valor númerico
    • Alterar para ts/xts

Média Móvel Geral

OBS: Para gráficos, usar ggplot

  • Autor: Gabriel Petrini (Baseada na função MM12m)
media_movel <- function(dados,
                        digitos = 2, 
                        meses = 12,
                        tabela = FALSE) {
    if ("ts" %in% class(dados)) { # Inicia checagem
            dados <- as.xts(dados)
    }
    else if ("tbl_df" %in% class(dados) |
            "tbl" %in% class(dados)) {
        stop("Usar ajuste_xts", call. = FALSE)
            }
    else if ("xts" %in% class(dados) |
            "zoo" %in% class(dados)) {
        dados <- dados
    }
    else  {
        stop("Usar ajuste_xts", call. = FALSE)
    } # Inicia operacao
    y <- c(1:(length(dados)))  #cria variavel y to tamanho da serie inserida
    for (i in 1:(length(dados) - (meses - 1))) { #para i vezes menos meses 
        y[i + (meses - 1)] <- mean(dados[(i + 0):(i + (meses - 1))]) #faz média de meses passos
        }
    y[1:meses] <- NA   #coloca NA nas primeiras 12 entradas
    if (tabela == FALSE) {
        mm_xts <-  xts(x = y,
                    order.by = as.Date(index(dados)))
        return(mm_xts)
    } else {
        mm_xts <-  xts(x = y,
                    order.by = as.Date(index(dados)))
        Tabela_mm <- merge.xts(x = dados,
                           y = mm_xts)
        # serie <- deparse(substitute(dados)) # TODO
        # colnames(Tabela_mm) <- c(as.character(serie), "Media_Movel")
    return(Tabela_mm)
    }
}
unemp_media12 <- media_movel(unemp)
head(unemp_media12)
##            [,1]
## 1948-01-01   NA
## 1948-02-01   NA
## 1948-03-01   NA
## 1948-04-01   NA
## 1948-05-01   NA
## 1948-06-01   NA
unemp_media12T <- media_movel(unemp, tabela = TRUE)
head(unemp_media12T, n = 13)
##              x     y
## jan 1948 235.1    NA
## fev 1948 280.7    NA
## mar 1948 264.6    NA
## abr 1948 240.7    NA
## mai 1948 201.4    NA
## jun 1948 240.8    NA
## jul 1948 241.1    NA
## ago 1948 223.8    NA
## set 1948 206.1    NA
## out 1948 174.7    NA
## nov 1948 203.3    NA
## dez 1948 220.5    NA
## jan 1949 299.5 233.1
unemp_media4 <- media_movel(unemp, meses = 4)
head(unemp_media4)
##               [,1]
## 1948-01-01      NA
## 1948-02-01      NA
## 1948-03-01      NA
## 1948-04-01      NA
## 1948-05-01 246.850
## 1948-06-01 236.875

Atenção:

  • Erro com dados tbl e tbl_df

Taxa acumulada

  • Autor: Gabriel Petrini (Baseada em FazTexto.TxAccum)
  • Status: Quebrada
# tx_acum <- function(dados,
#                         digitos = 2, 
#                         meses = 12,
#                         tabela = FALSE) {
#     if ("ts" %in% class(dados)) { # Inicio checagem
#             dados <- as.xts(dados)
#     }
#     else if ("tbl_df" %in% class(dados) |
#             "tbl" %in% class(dados)) {
#         stop("Usar ajuste_xts", call. = FALSE)
#             }
#     else if ("xts" %in% class(dados) |
#             "zoo" %in% class(dados)) {
#         dados <- dados
#     }
#     else  {
#         stop("Usar ajuste_xts", call. = FALSE)
#     } # Inicio Operacao
#     m <- c(1:(length(dados)))    #cria variavel m to tamanho da serie inserida
#     for (i in 1:(length(dados) - (meses - 1))) {#para o total tamanho de x vezes, menos 12
#         k <- 1  #cria a var K iterada para chegar na serie m
#             for (j in 0:(meses - 1)) { #meses vezes para se taxa anualizada 
#                 k <- k * (1 + dados[i - j + (meses - 1)]/100) #faz multiplica??o de 12 passos para cada posi??o i
#                 }
#             k <- (k - 1)*100#retira 1 finalmente para ficar em valor porcentual
#     }
#     m[i + (meses - 1)] <- k
#     m[1:(meses - 1)] <- NA           #coloca NA nas primeiras 12 entradas
#     return(m)       
#         if (tabela == FALSE) { # Inicio tabela
#         acum_xts <-  xts(x = k,
#                     order.by = as.Date(index(dados)))
#         return(acum_xts)
#     } else {
#     acum_xts <-  xts(x = k,
#                     order.by = as.Date(index(dados)))
#     Tabela_accum <- merge.xts(x = dados,
#                               y = acum_xts)
#     return(Tabela_accum)
#     }
# }
# teste_acum <- tx_acum(UnempRate) # TODO

Gráficos

Plotar gráficos

Template simples

  • Função: grafico_padrão
  • Autor: Gabriel Petrini
  • Status: Aprimoramento
grafico_padrao <- function(dado_xts, 
                           tipo_grafico = geom_line(size = 1), 
                           titulo = NULL,
                           fonte = NULL,
                           x_titulo = NULL, 
                           y_titulo = NULL,
                           tema = theme_classic(), 
                           quebra_data = "1 year",
                           label_data = "%Y",
                           pontos = 0){
  dado_xts <- as.xts(dado_xts)
  ggplot(data = dado_xts,
         aes(
           x = as.Date(index(dado_xts)),
           y = coredata(dado_xts))) +
    tipo_grafico + 
    labs(x = x_titulo,
         y = y_titulo,
         title = titulo,
         caption = paste0("Fonte: ", fonte)) + 
    tema + 
    theme(panel.border = element_blank(), 
          axis.line = element_line(colour = "black", 
                                   size = 0.7), 
          axis.text.x = element_text(angle = 90, 
                                     hjust = 0, 
                                     vjust = 0.5, 
                                     size = 14),
          axis.text.y = element_text(angle = 0, 
                                     hjust = 0, 
                                     vjust = 0.5, 
                                     size = 14),
          text = element_text(size = 10,
                            family = "TT Times New Roman")) +
    scale_x_date(date_breaks = quebra_data, date_labels = label_data) +
    geom_point(size = pontos)
}

Exemplo:

Plot_Simples <- grafico_padrao(unemp)
Plot_Simples

Plot_Formatado <- grafico_padrao(dado_xts = unemp, 
                                 titulo = "Desemprego nos EUA (1947-1980)", 
                                 x_titulo = "Ano", 
                                 y_titulo = "Desempregados (mil)", 
                                 quebra_data = "5 years", 
                                 label_data = "%Y", 
                                 tema = theme_economist_white(), 
                                 fonte = "Pacote astsa")
Plot_Formatado

Sugestões de mudança:

  • Usar como base para função de gráficos do cecon
    • Incluir logo cecon
    • Verificar estilo cecon
    • Determinar número de linhas

Gráfico CECON

  • Autor: Gabriel Petrini
  • Status: Em construção
grafico_cecon <- function(dado_xts, 
                          logo = TRUE,
                          FUN = grafico_padrao){
    grafico <- dado_xts %>% FUN()
    if (logo == TRUE) {
        grafico_logo <- grafico %>%  add_logo()
        return(grafico_logo)
        
        # if (is.null(transform) == FALSE ) {
        #     grafico_logo %>% add_fun(transform)
        # }
        # 
        # else {
        #     return(grafico_logo)
        # }
        
    } else {
        return(grafico)
    }
}

Exemplo:

grafico_cecon(unemp)

Sugestões de mudanças:

  • Adicionar fonte
  • Adicionar operação

Gráfico rápido

Ideia é gerar um gráfico pronto para uso a partir de dados brutos e em poucas linhas de código. A implementação é pensada nas rotinas não focadas na geração de gráficos. No momento, só é possível plotar uma série por vez.

  • Autor: Gabriel Petrini
  • Status: Em desenvolvimento
grafico_rapido <- function(dado,
                           remover_NA = FALSE){
    grafico <- dado %>% 
        ajuste_xts(remover_NA = remover_NA) %>% 
        grafico_padrao %>% 
        add_logo
    return(grafico)           }

Exemplo:

grafico_rapido(dado_excel, remover_NA = TRUE)
#grafico_rapido(unemp_media12T) # Adicionar para mais de uma série

Exportar gráficos

Salvar gráfico

  • Autor: Gabriel Petrini
  • Função: salvar_grafico
    • Uso: Salva gráfico no formato .png na pasta especificada. Nome do arquivo final é iniciado com YYYY-MM-DD
  • Status: Aprimoramento
salvar_grafico <- function(grafico, pasta, formato = ".png"){
  nome_grafico <- deparse(substitute(grafico))
  salvar_nome <- paste0(Sys.Date(),"_",nome_grafico,formato)
  ggsave(file.path(pasta, salvar_nome))
}

Exemplo:

Consultar pasta Temp

salvar_grafico(grafico = Plot_Formatado, 
               pasta = 'Temp')
## Saving 7 x 5 in image

Sugestão de modificações:

  • Adicionar default pasta = ‘Grafico’

Análises (Gerar textos)

Positivo/Negativo

Cria uma função que retorna texto “positivo” “negativo” dependendo se acima ou abaixo de z

  • Autor: Arthur Welle
  • Status: Aprimoramento
FazTexto.Cortes1 <- function(x, # Série a ser analisada
                             z, # fronteira
                             y){ # Se feminino, y=1. Se masculino, y=2.
  if (x >= z & y == 1) {k <- "positiva"}
  if (x >= z & y == 2) {k <- "positivo"}
  if (x < z & y == 1) {k <- "negativa"}
  if (x < z & y == 2) {k <- "negativo"}
  return(k)
}

Exemplo:

[EM ABERTO]

Sugestões de mudança:

  • Tornar masc/fem um boolean

Níveis bom/ruim

Cria uma função que retorna texto “muito ruim”, “ruim”, “bom”, “muito bom”.

  • Autor: Arthur Welle
  • Status: Aprimoramento
FazTexto.Cortes3 <- function(x, # Séria a ser analisada
                             y, # Corte 1
                             z, # Corte 2
                             w # Corte 3
                             ){
  k <- "muito ruim"
  if (x > y) {k <- "ruim"}
  if (x > z) {k <- "bom"}
  if (x > w) {k <- "muito bom"}
  return(k)
}

Exemplo:

[EM ABERTO]

Sugestões de mudanças:

Dúvidas:

  • Que tipo de série deve ser incluída?
  • Onde estão definidos y, z, w?

Último Valor

Cria uma função que retorna o ultimo valor de uma série x.

  • Autor: Arthur Welle
  • Status: Aprimoramento
FazTexto.UltimoValor <- function(x, # Série a ser analisada
                                 digitos = 2){
  
    k <- format(round(x[length(x)], 
                      digits = digitos), 
                big.mark = ".", 
                decimal.mark = ",") 
  return(k)
}

Exemplo:

  • Último valor da série unemp é 572,5

Sugestões de mudanças:

  • Adicionar unidade de medida

Mudanças:

  • Tornou dígitos 2 por default

12 meses anteriores

Cria uma função que retorna o valor 12 meses anteriores de uma série mensal x:

  • Autor: Arthur Welle
  • Status: Aprimoramento
FazTexto.Valor12mAntes <- function(x, # Série a ser analisada
                                   digitos = 2){
  k <- format(round(x[length(x) - 11],
                    digits = digitos), 
              big.mark = ".", 
              decimal.mark = ",") 
  return(k)
}

Exemplo:

  • O valor de 12 meses anteriores da série unemp é 689,7

Mudanças:

  • Dígitos = 2 por padrão

Sugestões:

  • Generalizar (abaixo)

m meses anteriores

Expande função 12 meses anteriores para qualquer número (12 padrão):

  • Autor: Gabriel Petrini (Baseada em FazTexto.Valor12mAntes)
  • Status: Desenvolvimento
FazTexto.ValorMesAntes <- function(x, # Série a ser analisada
                                   digitos = 2,
                                   meses = 12){
  k <- format(round(x[length(x) -  (meses - 1)],
                    digits = digitos), 
              big.mark = ".", 
              decimal.mark = ",") 
  return(k)
}

Exemplo:

  • O valor de 4 meses anteriores da série unemp é 579,7

Variação absoluta (p.p.) 12 meses

Cria uma função que retorna a variação absoluta (em pontos percentuais se ja for uma série percental) de uma série no ultimo ano:

  • Autor: Arthur Welle
  • Status: Aprimoramento
FazTexto.Var12m.Abs <- function(x, # Série a ser analisada
                                digitos = 2){
  k <- format(round(x[length(x)] - x[length(x) - 11], #subtrai o ultimo valor da série x de 12 meses anteriores
              digits = digitos), 
              big.mark = ".", 
              decimal.mark = ",") 
  return(k)
}

Exemplo:

  • Variação absoluta (%) em 12 meses de unemp é -117,2

Mudanças:

  • Dígitos = 2 por default

Sugestões de mudanças:

  • Verificar/Forçar série em percentual
  • Generalização (abaixo)

Variação absoluta (p.p.) 24 meses

Cria uma função que retorna a variação em pontos percentuais de uma série no ultimos dois anos:

  • Autor: Arthur Welle
  • Status: Substituída (abaixo)
FazTexto.Var24m.Abs <- function(x,y){#x é a séria a ser análisada, y o número de digitos da saida
  k=format(round(x[length(x)]-x[length(x)-23],digits = y), big.mark=".", decimal.mark=",") #subtrai o ultimo valor da série x de 24 meses anteriores
  return(k)
}

Variação absoluta (p.p.) n meses

  • Autor: Gabriel Petrini (baseada em FazTexto.Var12m.Abs)
FazTexto.VarMes.Abs <- function(x, # Série a ser analisada
                                digitos = 2, 
                                meses = 12){
  k <- format(round(x[length(x)] - x[length(x) - (meses - 1)], #subtrai o ultimo valor da série x de meses meses anteriores
              digits = digitos), 
              big.mark = ".", 
              decimal.mark = ",") 
  return(k)
}

Exemplo:

  • Variação absoluta em 24 meses de unemp é -212,3

Variação percentual 12 meses

Cria uma função que retorna a variação percentuais de uma série no ultimo ano

  • Autor: Arthur Welle
  • Status: Aprimoramento
FazTexto.Var12m.porc <- function(x, # Série a ser analisada
                                 digitos = 2){
  k <- format(round((((x[length(x)]/x[length(x) - 11]) - 1)*100), #divide o ultimo valor da série x de 12 meses anteriores
                    digits = digitos), 
              big.mark = ".", 
              decimal.mark = ",") 
  return(k)
}

Exemplo:

  • Variação percentual da série unemp no último ano foi de -16,99%

Mudanças:

  • Dígitos = 2 por default

Sugestões de mudanças:

  • Verificar/Forçar série em percentual
  • Generalização (abaixo)
  • Incluir %

Variação percentual 24 meses

Cria uma função que retorna a variação percentuais de uma série nos ultimos 2 anoa

  • Autor: Arthur Welle
  • Status: Substituída (abaixo)
FazTexto.Var24m.porc <- function(x,y){#x é a séria a ser análisada, y o número de digitos da saida
  k=format(round((((x[length(x)]/x[length(x)-23])-1)*100),digits = y), big.mark=".", decimal.mark=",") #divide o ultimo valor da série x de 24 meses anteriores
  return(k)
}

Variação percentual n meses

Cria uma função que retorna a variação percentuais de uma série nos último n meses

  • Autor: Gabriel Petrini
  • Status: Desenvolvimento
FazTexto.VarMes.porc <- function(x, # Série a ser analisada
                                 digitos = 2,
                                 meses = 12){
  k <- format(round((((x[length(x)]/x[length(x) - (meses - 1)]) - 1)*100), #divide o ultimo valor da série x de meses meses anteriores
                    digits = digitos), 
              big.mark = ".", 
              decimal.mark = ",") 
  return(k)
}

Exemplo:

  • Variação percentual da série unemp nos últimos 2 anos foi de -27,05%

Taxa anualizada

Cria função para taxa anualizado (eleva a 12 potência)(ex. IPCA=2,33)

  • Autor: Arthur Welle
  • Status: Aprimoramento
FazTexto.TaxaAnualizada <- function(x){#x é a séria a ser análisada
  k <- c(1:length(x)) 
     for (i in 0:length(x)) {         
        k[i] <- (1 + x[i]/100)^12
     }
  k <- (k - 1)*100
  return(k)
}

Exemplo:

[EM ABERTO]

Sugestões de mudança:

  • Verificar se está em taxa

Dúvidas:

  • Retorna texto?

Acumulado 12 meses

Cria função para acumulado em 12 meses

  • Autor: Arthur Welle
  • Status: Aprimoramento
FazTexto.Acc12m <- function(x,
                            digitos = 2){
  k <- 0
     for (i in 0:11) {         #para i vezes menos 12 
        k <- k + x[length(x) - i] #faz soma de 12 passos
     }
     k <- format(round(k, digits = digitos), 
                 big.mark = ".", 
                 decimal.mark = ",") #arredonda para y digitos
  return(k)
}

Exemplo:

  • A taxa acumulada em 12 meses para unemp é 7.256,6

Mudanças:

  • Dígitos = 2 por default

Sugestões de mudanças:

  • Generalização (abaixo)
  • Incluir %

Acumulado m meses

Cria função para acumulado em m meses

  • Autor: Gabriel Petrini
  • Status: Aprimoramento
FazTexto.AccMes <- function(x,
                            digitos = 2,
                            meses = 12){
  k <- 0
     for (i in 0:(meses - 1)) {         #para i vezes menos meses
        k <- k + x[length(x) - i] #faz soma de 12 passos
     }
     k <- format(round(k, digits = digitos), 
                 big.mark = ".", 
                 decimal.mark = ",") 
  return(k)
}

Exemplo:

  • A acumulado em 4 meses para unemp é 2.261,1

Taxa acumulada 12 meses

  • Autor: Arthur Welle
  • Status: Corrigir
FazTexto.TaxaAcc12m <- function(x){#x ? a s?ria a ser an?lisada
                m <- c(1:(length(x))) #cria variavel m to tamanho da serie inserida
                for (i in 1:(length(x) - 11)) { #para o total tamanho de x vezes, menos 12
                    k <- 1  #cria a var K iterada para chegar na seria m
                    for (j in 0:11) {#12 vezes para se taxa anualizada 
                        k <- k * (1 + x[(i - j) + 11]/100) #faz multiplica??o de 12 passos para cada posi??o i
                            }
                     k <- (k - 1)*100 #retira 1 finalmente para ficar em valor porcentual
                     m[i + 11] <- k
                      }
                m[1:11] <- NA   #coloca NA nas primeiras 12 entradas
                return(m)  #d? como retorno a s?rie taxa anualizada
}

Exemplo:

  • Taxa acumulada em 12 meses de UnempRate é NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 55.8249623, 57.3232792, 58.9761504, 60.6495835, 62.8121741, 66.4337215, 70.4383827, 75.5236473, 80.0981052, 84.4525082, 90.1886406, 94.6073505, 99.1156289, 104.0461112, 108.0961758, 111.0520874, 112.2535224, 111.4502924, 109.8604406, 106.5262093, 102.2519133, 98.6232199, 93.3815138, 89.9054033, 86.1431265, 80.6072714, 74.4140656, 69.0399628, 64.5747562, 60.8237646, 57.4732695, 54.4823242, 52.7015481, 51.233264, 50.501254, 49.6313046, 48.1911573, 47.1975384, 46.6324807, 45.9261585, 45.6433559, 45.6433559, 45.3616473, 45.3616473, 45.6441772, 45.2199709, 44.6549126, 43.6737262, 43.1152277, 42.701201, 41.8763386, 41.3269627, 41.0525414, 40.5042322, 39.8234946, 39.0113543, 38.0675333, 37.9330955, 38.0677958, 39.0106978, 41.3162411, 44.4596391, 48.7990275, 53.8602189, 58.7993116, 63.7569486, 68.5405012, 73.4637875, 78.5457344, 83.2443063, 86.9985799, 90.0789829, 91.1734876, 91.3543518, 90.2742708, 88.1283204, 86.0005731, 83.3610191, 81.1058694, 78.1930976, 75.488079, 72.4882828, 70.5094497, 68.7214574, 67.2725136, 65.5333854, 64.1239242, 63.3438675, 62.0981564, 62.0981564, 62.5639557, 63.1892017, 63.0319867, 62.8744679, 62.4019114, 62.5583679, 62.7148245, 63.0256456, 62.8700867, 62.2478514, 62.0919938, 61.6253182, 61.4709482, 61.0069512, 61.0069512, 61.4740894, 62.2571839, 63.3503507, 64.9210272, 67.9081573, 72.7192793, 78.3496297, 84.3517807, 90.0296026, 95.4797824, 101.6765479, 107.5109707, 112.1134319, 116.0035431, 118.0685866, 120.1454302, 120.5576876, 119.124165, 116.4792122, 111.847564, 107.4958867, 103.2534057, 99.0899281, 95.5447467, 93.1465564, 91.6819379, 91.137387, 89.5145224, 87.920475, 85.637329, 85.1139155, 85.1139155, 84.9374485, 85.6392984, 86.168688, 86.8792555, 86.8792555, 87.4147262, 87.9486712, 90.2734407, 93.1427857, 97.5282416, 100.5069898, 103.9377178, 107.4404649, 110.3814922, 113.1732846, 115.1996466, 117.4605789, 118.4961054, 118.4961054, 117.2639845, 115.2466774, 112.0607876, 109.1072947, 106.175884, 103.2747225, 100.6224894, 97.6197206, 95.9449772, 94.2781484, 92.4366494, 91.8899544, 90.983102, 90.8041113, 91.5207465, 91.7010862, 91.8827934, 92.6130799, 93.158726, 93.7090358, 93.5250766, 93.3405913, 93.7106211, 93.7106211, 93.7106211, 93.3471866, 92.0811152, 91.3583264, 90.8146948, 89.5486258, 89.0131777, 87.7602494, 87.0463321, 86.5108941, 85.976479, 84.5635522, 83.5119081, 81.9596457, 81.1029619, 79.7348564, 78.7107262, 77.8580986, 76.850404, 76.176046, 75.1674045, 73.9940343, 72.6607467, 71.6693931, 70.0297619, 68.2569397, 65.8691875, 64.1331636, 62.4087464, 61.4744679, 60.4010384, 59.4800755, 58.5617641, 57.7979792, 57.1887205, 56.4322782, 56.1305766, 55.8314759, 55.8314759, 55.6816379, 55.5313661, 54.7814559, 54.7814559, 55.079399, 55.2290896, 55.8301703, 56.7361596, 57.1909067, 57.1909067, 56.8891967, 56.8891967, 56.7381965, 56.2838829, 55.8295693, 55.6805927, 55.5310436, 55.2310801, 54.6323103, 53.7384819, 53.1454695, 52.5536029, 52.1135444, 51.383633, 50.946108, 50.946108, 50.946108, 50.3683239, 50.079154, 50.079154, 50.6602931, 51.098259, 51.098259, 51.2448141, 51.9740562, 53.4395727, 55.0703314, 56.7232128, 58.5508888, 60.8354837, 63.1596959, 65.5243292, 67.9186059, 70.5144491, 74.1459282, 78.1958335, 82.3001521, 85.6083688, 88.6249484, 91.1568269, 93.3603638, 95.0083215, 96.6750592, 98.3608455, 99.4921811, 100.0616164, 100.4408802, 100.2510687, 100.0632159, 99.6878628, 99.3121566, 98.9350286, 98.5571842, 97.9978682, 97.4385522, 96.6927975, 95.9491575, 95.3914274, 93.9125898, 92.6259659, 90.8172714, 89.3825551, 87.7761055, 86.5301977, 85.2878463, 83.8920809, 82.3292587, 80.9466672, 79.7449341, 78.2057291, 77.6960845, 77.3569699, 77.6931916, 78.0297318, 78.1989615, 78.1989615, 78.5403389, 79.2179113, 80.4126974, 81.446581, 83.1795952, 85.4649452, 88.3018851, 92.0823245, 98.0792182, 104.2574925, 111.6286081, 119.3021645, 127.0595069, 134.1417032, 140.7871631, 147.4185284, 153.0363569, 158.5527893, 162.4481233, 165.153774, 164.6672533, 163.6968876, 161.2798675, 158.3927972, 154.8139496, 152.2447897, 150.1562864, 148.7690981, 147.1581974, 145.7825488, 144.8705542, 143.9619436, 142.8407949, 142.3939857, 141.9455232, 140.8191474, 139.917203, 138.8064753, 137.0342565, 135.27192, 133.519429, 131.7767467, 129.8344835, 126.8385032, 124.3250572, 121.0170379, 118.3541821, 116.1073196, 114.2793441, 111.688059, 110.3031839, 108.530966, 106.9660057, 105.0208365, 103.288266, 102.7129219, 101.3880008, 100.4460551, 99.5058766, 98.9401699, 98.3744633, 98.0008767, 97.2558123, 97.2558123, 97.0693701, 97.4433158, 97.4433158, 97.4433158, 98.3711509, 99.1169071, 100.0552526, 102.3307626, 105.9850254, 109.4828843, 113.4391239, 116.8654365, 119.9429971, 123.0671874, 126.2357554, 128.804184, 131.5866484, 134.1887456, 136.6053274, 137.270572, 137.270572, 137.0504694, 135.7323018, 134.8559736, 135.0750556, 135.9530203, 137.7155079, 140.8287138, 143.4996422, 147.1070443, 151.2369671, 156.402587, 161.1906838, 166.2835384, 172.4877215, 178.5881929, 184.8194292, 191.1781886, 197.9246712, 203.9766959, 209.5338567, 214.3350205, 218.0668518, 220.3970119, 222.4527214, 223.6274126, 222.448442, 221.2716229, 218.6358484, 214.2868605, 207.7392176, 200.7767918, 193.7568667, 186.1028244, 179.1310046, 173.0408736, 166.5754249, 159.8021836, 155.2900799, 150.8482195, 146.9287161, 143.7395998, 141.0338873, 138.8020921, 137.0461943, 135.7341305, 134.425708, 133.3363692, 132.9010401, 133.117894, 132.9010401, 132.0328163, 131.5995151, 131.1666188, 130.7341274, 130.0872093, 128.5959033, 128.5959033, 128.5959033, 128.3824618, 128.3824618, 127.9575642, 127.1085602, 126.6836611, 126.4716091, 126.0475049, 125.8356516, 124.9890325, 124.9890325, 123.7367744, 122.488011, 120.8245493, 118.9671465, 116.9264462, 115.1018312, 113.2874765, 111.0906954, 109.3085037, 107.3450093, 105.5895013, 103.6734761, 101.7735369, 99.8860389, 98.1920895, 96.8845073, 95.4027801, 94.2977691, 93.563184, 92.6475587, 91.371747, 90.646854, 89.9233366, 89.3873347, 88.3173497, 87.0725703, 86.7172568, 86.0086524, 86.0086524, 85.6560293, 85.1275966, 84.9516198, 84.9516198, 84.9516198, 85.1277642, 85.1277642, 85.6536954, 86.183126, 86.5374231, 86.8927325, 86.715583, 87.2475362, 87.9601815, 88.8543783, 89.7536849, 91.0163045, 92.6520293, 94.6512484, 97.2245416, 100.4025674, 102.6863573, 105.5763719, 108.6970759, 111.0686336, 113.2693492, 115.0869857, 117.1257249, 118.765957, 120.6234038, 122.6833795, 124.5511805, 125.8079968, 127.2921808, 128.5702999, 130.7064709, 132.6506266, 134.3965975, 136.1573231, 137.044299, 137.9329374, 138.3780879, 138.1575716, 137.277137, 136.3967024, 135.7351444, 134.6366582, 132.8986089, 131.384876, 129.6613388, 127.7350088, 126.669831, 124.7650426, 122.666396, 121.2231879, 119.7866737, 118.5588152, 117.1276536, 115.2979262, 113.28955, 111.6948618, 110.3047455, 108.7235068, 106.7618197, 105.0096009, 103.0773709, 100.9954966, 98.7434462, 96.6964632, 95.5851837, 94.8464295, 94.1125446, 93.5642041, 93.0158636, 92.6503032, 92.2847429, 92.2847429, 92.467697, 92.6489283, 92.8308442, 93.0132764, 92.647721, 92.4651165, 91.9193742, 91.3756933, 90.4695584, 89.7467137, 89.2056109, 88.6665636, 88.3078819, 87.5992916, 87.0683502, 86.5379107, 85.476025, 84.2442108, 83.7202936, 82.6764283, 82.1549923, 81.6345494, 80.7687985, 79.5636732, 78.537595, 77.3574598, 76.1829071, 75.347917, 74.1767, 73.3449106, 72.521028, 72.0281108, 71.5356639, 71.0441577, 70.7164869, 70.3891302, 69.7362983, 69.0909132, 68.6077963, 67.6443231, 67.6443231, 67.322549, 67.0029262, 66.6839139, 66.2053955, 65.7277938, 65.0916026, 64.6158343, 64.140981, 63.6711117, 63.2021401, 63.0458162, 62.4193193, 62.1069744, 61.4864693, 61.0228718, 60.8683393, 60.4047417, 60.0956767, 59.941442, 59.941442, 60.24755, 60.5545376, 60.8624083, 61.6380226, 62.1051845, 63.0395083, 63.8218476, 65.0808051, 66.5121416, 68.7623057, 71.36616, 74.1754413, 76.8371481, 79.3730537, 82.1194354, 84.7411163, 87.225627, 89.5503005, 91.7227968, 93.1849344, 94.4765242, 95.0321714, 95.5878186, 96.1445202, 96.5135598, 97.069206, 97.2549451, 97.4415629, 98.0030081, 98.9369845, 99.688399, 100.2551589, 101.0151405, 101.5878332, 101.5878332, 101.0156823, 100.6381881, 99.8839092, 99.50748, 98.7531984, 97.8139111, 96.5137257, 95.4045231, 94.2984598, 93.0129312, 92.0990443, 91.3713964, 90.826696, 89.7495933, 89.3915752, 88.3195474, 87.4261909, 86.7142206, 85.6553498, 84.7771315, 83.9005796, 83.3756493, 82.5032628, 81.809334, 80.944399, 79.9172785, 78.7268995, 77.7094789, 77.031845, 76.1880326, 75.5181161, 75.1844315, 74.6834274, 74.0166967, 73.184877, 72.3586132, 71.8642769, 71.7007524, 71.3740145, 70.88344, 70.5563904, 70.3930222, 70.2304334, 70.0683092, 70.0683092, 70.2312099, 70.7217897, 71.0491565, 71.8691429, 72.5238825, 73.0172778, 74.1762452, 75.0112224, 76.5213863, 78.2073595, 80.0760734, 82.6584263, 85.2803176, 88.2973343, 91.901111, 96.1126812, 101.8807012, 108.9810681, 116.5298139, 124.3810858, 132.699396, 141.505428, 149.9353344, 158.1801381, 166.704954, 175.2515783, 182.7466917, 189.6107571, 195.2161266, 199.2824644, 202.5773172, 205.0848641, 205.6441397, 205.3655215, 205.3655215, 205.0869034, 204.2510488, 202.8617746, 202.5849357, 200.9299589, 198.7532503, 196.3177618, 193.6288529, 191.4836193, 189.8835262, 189.0900494, 188.035938, 186.983752, 185.9325294, 184.6209123, 181.756475, 179.690433, 177.1431613, 175.1183711, 173.1028519, 170.5904061, 168.5989404, 166.3872382, 164.68119, 162.4977522, 159.6025564, 157.2099061, 155.3081693, 153.657978, 152.9585534, 151.562278, 149.7057298, 148.3146116, 146.9338074, 145.5670151, 143.5319294, 141.5062479, 140.1595588, 139.0425376, 137.26196, 134.8364195, 131.5898331, 129.2332298, 127.5288935, 124.9795502, 122.4634695, 119.3679666, 116.9237553, 114.9020987, 112.2911386, 109.3150946, 107.1551827, 105.0155518, 103.2911219, 101.0112214, 98.7526684, 97.2512318, 95.7639464, 94.2906523, 92.6487595, 90.6552163, 89.2122251, 87.9567886, 86.7096819, 85.6468184, 84.2470309, 83.2021517, 82.3347173, 81.6407698, 80.2607829, 79.5773297, 78.7270582, 78.387273, 78.2172184, 78.0471638, 77.3675944

Taxa acumulada m meses

  • Autor: Gabriel Petrini
  • Status: Quebrada
FazTexto.TaxaAccMeses <- function(x,
                                  meses = 12){#x ? a s?ria a ser an?lisada
                m <- c(1:(length(x))) #cria variavel m to tamanho da serie inserida
                for (i in 1:(length(x) (meses - 1))) { #para o total tamanho de x vezes, menos 12
                    k <- 1  #cria a var K iterada para chegar na seria m
                    for (j in 0:(meses - 1)) {#12 vezes para se taxa anualizada 
                        k <- k * (1 + x[(i - j) + (meses - 1)]/100) #faz multiplica??o de 12 passos para cada posi??o i
                            }
                     k <- (k - 1)*100 #retira 1 finalmente para ficar em valor porcentual
                     m[i + (meses - 1)] <- k
                      }
                m[1:(meses - 1)] <- NA   #coloca NA nas primeiras 12 entradas
                return(m)  #d? como retorno a s?rie taxa anualizada
}
  • Taxa acumulada em 4 meses de UnempRate é

Número índice

Cria função para criar número indice de uma série mensal de inflação (para usar em deflacionamentos até para a ultima data)

  • Autor: Arthur Welle
  • Status: Aprimoramento
FazTexto.N_Indice <- function(x){#x é a séria a ser análisada
  k <- c(1:length(x)) #retorna o numero indice para deflacionar para o ultimo valor do ipca
     k[1] <- (1 + x[1]/100)
     for (i in 2:length(x)) {         
        k[i] <- (1 + x[i]/100)*k[i - 1]
     }
  k <- k[length(k)/k]
  return(k)
}

Exemplo:

[EM ABERTO]

Dúvidas:

  • Retorna Texto?

Exportando funções

# saveRDS(object = add_logo, 
#         file = "Funcoes.R")

Pendências

  • Reduzir dependências de pacotes
  • Amplicar ajuste_xts para mais de uma série
  • Corrigir função de taxa acumulada
  • Incluir logo cecon sem ggplotly
  • Exportar gráfico cecon ggplotly
  • Adicionar funções no ggplotly
  • Exportar funções